package resolver

import "time"

// DomainDNSRecord 结构体表示域名 DNS 记录查询的结果。
// 该结构体包含多个属性来描述查询结果及相关信息。
type DomainDNSRecord struct {
	// Result 存储域名的 DNS 查询结果 简单记录。
	Result []string
	// Duration 记录 DNS 查询的耗时。
	Duration time.Duration
	// FullResult 存储完整的 DNS 查询记录。
	FullResult []string
	// DNSServer 表示用于查询的 DNS 服务器。
	DNSServer string
	// Authoritative 表示 DNS 服务器是否为该域名的权威 DNS 服务器。
	Authoritative bool
	// RecursionAvailable 表示 DNS 服务器是否支持递归查询。
	RecursionAvailable bool
}

func NewDomainDNSRecord() *DomainDNSRecord {
	return &DomainDNSRecord{
		Result:        []string{},
		FullResult:    []string{},
		Authoritative: false,
	}
}

func (d *DomainDNSRecord) AddResult(res string) {
	d.Result = append(d.Result, res)
}

func (d *DomainDNSRecord) AddFullResult(res string) {
	d.FullResult = append(d.FullResult, res)
}

func (d *DomainDNSRecord) SetDuration(dur time.Duration) {
	d.Duration = dur
}

func (d *DomainDNSRecord) SetDNSServer(dnsServer string) {
	d.DNSServer = dnsServer
}

func (d *DomainDNSRecord) SetAuthoritative(isAuth bool) {
	d.Authoritative = isAuth
}

func (d *DomainDNSRecord) SetRecursionAvailable(isRecursion bool) {
	d.RecursionAvailable = isRecursion
}
